python文件操作中的增加、读取、删除、修改、查找

您所在的位置:网站首页 python 搜索文件内容 python文件操作中的增加、读取、删除、修改、查找

python文件操作中的增加、读取、删除、修改、查找

2024-01-16 15:42| 来源: 网络整理| 查看: 265

在上一篇博文里有介绍简单的文件操作,而这一篇是在上一篇的基础上延伸的。百变不离其中,让我们继续往下看。

代码背景:我最近在写一个乞丐版的学生信息管理系统,主要实现录入,查看,修改,删除,搜索,清空学生信息等功能。所以代码中会用class类初始化学生信息各参数,字符串拼接成一整串信息,并存储在文件student.txt中

出席嘉宾:[file object].write(),,,,[file object].readlines()

                   [file object].seek() 将文件光标移到指定位置。0是起始点, 1是当前所处位置,2是终点

                   [string].replace(old_info,new_info) 用新的子串代替老子串

                   [file object].truncate()  从文件光标所处位置起截断(删除)下面的内容                 

1. 在文件中添加新内容。那肯定是调用我们经常使用的write方法

class StudentInfo: def __init__(self, name, stuid, gender, age, major, tel): self.name = name self.stuid = stuid self.gender = gender self.age = age self.major = major self.tel = tel def info(self): # 字符串的拼接 msg = self.name + ' ' + self.stuid + ' ' + self.gender + self.age + ' ' + self.major + ' ' + self.tel + '\n' return msg def add(): # the file has been created , aappending,and will be closed automatically with open('student.txt', 'a') as f: name = input("Name: ") stuid = input("Student ID: ") gender = input("1.Male 2.Female : ") age = input("Age: ") major = input("Major: ") tel = input("Telephone: ") student = StudentInfo(name, stuid, gender, age, major, tel) f.write(student.info())

2. 读取文件中的全部内容。read方法走起~

def view(): with open("student.txt", 'r') as f: lines = f.readlines() for line in lines: print(line)

3. 删除文件中特定一行的信息。这个是文件操作中最精髓的地方,搞懂了这个,其他的操作都可以迎刃而解。

这里要特别注意f.seek(0)的位置。在写代码的时候贪方便,直接省略了lines = f.readlines()这个操作,而是写成了for line in f.readlines(),发现不对头了,文本多复制了一遍,第二遍要删的是删掉了,可是跟预期的不一样啊,那只能是f.seek(0)和f.truncate() 没起作用了。为什么呢,因为我后面的for line in f.readlines()将文件光标又移动到了文件的末尾,我在末尾将除了要删的信息外复制了一遍,f.truncate()将在由光标起始处起删除,可是此刻已经是文件的末尾,这个方法相当于没进行操作。

故改为了lines = f.readlines(),这样的话,光标移到了文件起始处,在起始处复制了除要删除的信息外的其他信息,光标位于新旧信息之间,最后,f.truncate()将原始信息删掉了。

def delete(): discard = input("delete the info you want: ") with open('student.txt', 'r+') as f: lines = f.readlines() f.seek(0) for line in lines: if discard not in line: f.write(line) f.truncate()

4. 修改文件内容跟删除类似,但是多了一些操作,用字符串处理方法将要修改的信息改正过来了再写入文件。

def revise(): revise_line = input("show the info line: ") with open('student.txt', 'r+') as f: lines = f.readlines() f.seek(0) for line in lines: if revise_line in line: print(line) old_info = input("old info: ") new_info = input("new info: ") line = line.replace(old_info, new_info) f.write(line) else: f.write(line) f.truncate()

5. 相信看懂了前面部分的你,这个查找函数就是小case了。

def research(): search = input("info you want to search: ") with open("student.txt", 'r') as f: lines = f.readlines() for line in lines: if search in line: print(line)

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3